package com.qt.socket.tcpwork.work4;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.UUID;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
 * @Author zsf
 * @Date 2023/10/5 17:05
 * @Version 1.0
 */
public class ServerDemo {

    /**
     * /客户端:将本地文件上传到服务器。接收服务器的反馈。
     * //服务器:接收客户端上传的文件,上传完毕之后给出反馈。
     *
     *
     *      * TCP通信练习5---上传文件（多线程版)
     *      * 想要服务器不停止，能接收很多用户上传的图片。该怎么做呢?
     *      * 提示:可以用循环或者多线程。
     *      * 但是循环不合理，最优解法是（循环+多线程）改写
     *
     */
    public static void main(String[] args) throws IOException {

        ServerSocket serverSocket = new ServerSocket(8888);

        ThreadPoolExecutor pool = new ThreadPoolExecutor(
                3,
                8,
                60,
                TimeUnit.SECONDS,
                new ArrayBlockingQueue<>(3),
                Executors.defaultThreadFactory(),
                new ThreadPoolExecutor.AbortPolicy()
        );

        while (true) {
            Socket socket = serverSocket.accept();//监听要连接到此的套接字 并接收它
            //new Thread(new MyRunable(socket)).start();
            pool.submit(new MyRunable(socket));
        }

    }

}
